package java_DesignPattern.CreatorPattern.FactoryPattern.FactoryMethod;

/**
 * 咖啡商店类,模拟咖啡商店
 */
public class CoffeStore {

    private CoffeFactory coffeFactory;

     /**
      * 默认构造方法
      */
     //默认构造方法,咖啡工厂为空,需要通过设置咖啡工厂,才能生产咖啡
    public CoffeStore(){
    }

     /**
      * 构造方法
      * @param coffeFactory 咖啡工厂
      */
     //将咖啡工厂从外部传入,符合依赖注入原则
     //这种方式每个咖啡商店与咖啡工厂绑定,只能生产该工厂的咖啡,这导致了咖啡商店与咖啡工厂的耦合
    public CoffeStore(CoffeFactory coffeFactory){
        this.coffeFactory = coffeFactory;
    }

     /**
      * 设置咖啡工厂
      * @param coffeFactory 咖啡工厂
      */
     //通过设置咖啡工厂,可以动态改变咖啡商店生产的咖啡类型
    public void setCoffeFactory(CoffeFactory coffeFactory) {
        this.coffeFactory = coffeFactory;
    }

    /**
      * 订单咖啡
      * @param name 咖啡名称
      * @return 咖啡
      */
    public Coffe orderCoffe(String name){

        Coffe coffe = coffeFactory.createCoffe(name);
        return coffe;
    }
}
